   1              		.syntax unified
   2              		.cpu cortex-m3
   3              		.fpu softvfp
   4              		.eabi_attribute 20, 1
   5              		.eabi_attribute 21, 1
   6              		.eabi_attribute 23, 3
   7              		.eabi_attribute 24, 1
   8              		.eabi_attribute 25, 1
   9              		.eabi_attribute 26, 1
  10              		.eabi_attribute 30, 4
  11              		.eabi_attribute 34, 1
  12              		.eabi_attribute 18, 4
  13              		.thumb
  14              		.syntax unified
  15              		.file	"servus.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.section	.text.servus_CallSytem,"ax",%progbits
  20              		.align	1
  21              		.thumb
  22              		.thumb_func
  24              	servus_CallSytem:
  25              	.LFB9:
  26              		.file 1 "uc_libc_dev/motors/servus.c"
   1:uc_libc_dev/motors/servus.c **** #include "servus.h"
   2:uc_libc_dev/motors/servus.c **** 
   3:uc_libc_dev/motors/servus.c **** 
   4:uc_libc_dev/motors/servus.c **** // COMPORTAMENTO DO SERVOS - resolução em 10uS
   5:uc_libc_dev/motors/servus.c **** //                       TH             TL
   6:uc_libc_dev/motors/servus.c **** // Pulso para o servo: ######________________________
   7:uc_libc_dev/motors/servus.c **** //
   8:uc_libc_dev/motors/servus.c **** // Tempos TH	Servo normal	Servo de modo continuo
   9:uc_libc_dev/motors/servus.c **** // 1000ms		0º 				Máxima velocidade sentido antihorário
  10:uc_libc_dev/motors/servus.c **** // 1250ms		45º 			Média velocidade sentido antihorário
  11:uc_libc_dev/motors/servus.c **** // 1500ms		90º				Parado
  12:uc_libc_dev/motors/servus.c **** // 1750ms		135º 			Média velocidade sentido horário
  13:uc_libc_dev/motors/servus.c **** // 2000ms		180º			Máxima velocidade sentido horário
  14:uc_libc_dev/motors/servus.c **** // TL = 20ms
  15:uc_libc_dev/motors/servus.c **** 
  16:uc_libc_dev/motors/servus.c **** 
  17:uc_libc_dev/motors/servus.c **** // COMPORTAMENTO DO SENSORES ULTRASOM
  18:uc_libc_dev/motors/servus.c **** //          (10uS) trigger      (200uS) Tempo de   	    (200uS) Tempo que o  	(100us) Resposta 	(38
  19:uc_libc_dev/motors/servus.c **** //			 para o módulo	  excitação do ultrasom      módulo espera para  	 de aceitação		   Quando enco
  20:uc_libc_dev/motors/servus.c **** //							   (8 pulsos de 40Khz)	  começar a leiturado eco      do trigger
  21:uc_libc_dev/motors/servus.c **** // --------|--------------|-------------------------|-------------------------|-------------------|
  22:uc_libc_dev/motors/servus.c **** // _________HHHHHHHHHHHHHH_________________________________________________________________________
  23:uc_libc_dev/motors/servus.c **** // ________________________XXXXXXXXXXXXXXXXXXXXXXXXX_______________________________________________
  24:uc_libc_dev/motors/servus.c **** // ___________________________________________________________________________HHHHHHHHHHHHHHHHHHHH_
  25:uc_libc_dev/motors/servus.c **** // ___________________________________________________________________________HHHHHHHHHHHHHHHHHHHHH
  26:uc_libc_dev/motors/servus.c **** // ___________________________________________________________________________HHHHHHHHHHHHHHHHHHHHH
  27:uc_libc_dev/motors/servus.c **** //		O pino echo elevará após a exicitação do ultrasom (8 pulsos de 40Khz) e ficará em alta pelo men
  28:uc_libc_dev/motors/servus.c **** 
  29:uc_libc_dev/motors/servus.c **** // ATENÇÃO: O período de medição no hc-sr04 é de 50ms, se houver outro trigger dentro desse interva
  30:uc_libc_dev/motors/servus.c **** 
  31:uc_libc_dev/motors/servus.c **** 
  32:uc_libc_dev/motors/servus.c **** #if (US04_USES == pdON)
  33:uc_libc_dev/motors/servus.c **** typedef struct {
  34:uc_libc_dev/motors/servus.c **** 	unsigned modeContinuous:1;				// Sinaliza para ficar fazendo medição de forma continua ou não
  35:uc_libc_dev/motors/servus.c **** 	volatile unsigned measure:1; 			// Sinaliza quando começar as medições
  36:uc_libc_dev/motors/servus.c **** 	volatile unsigned done:1;				// Sinaliza quando as medições estão prontas
  37:uc_libc_dev/motors/servus.c **** 	volatile int Fdetected;
  38:uc_libc_dev/motors/servus.c **** 	volatile int Ftriggerok;
  39:uc_libc_dev/motors/servus.c **** 	volatile uint FCont;					// Contador micro segundos para o gerenciador do US
  40:uc_libc_dev/motors/servus.c **** 	volatile int FModule;					// Guarda o módulo atual para medição
  41:uc_libc_dev/motors/servus.c **** 	volatile uint measurements[US04_N_MODULE];
  42:uc_libc_dev/motors/servus.c **** } tUs04;
  43:uc_libc_dev/motors/servus.c **** static tUs04 us04;
  44:uc_libc_dev/motors/servus.c **** static void us04_Trigger(uint module, uint action);
  45:uc_libc_dev/motors/servus.c **** static uint us04_Echo(uint module);
  46:uc_libc_dev/motors/servus.c **** #endif // #if (US04_USES == pdON)
  47:uc_libc_dev/motors/servus.c **** 
  48:uc_libc_dev/motors/servus.c **** typedef struct {
  49:uc_libc_dev/motors/servus.c **** 	unsigned enable:1;
  50:uc_libc_dev/motors/servus.c **** 	uint pos;
  51:uc_libc_dev/motors/servus.c **** 	volatile s32 count;
  52:uc_libc_dev/motors/servus.c **** } tServo;
  53:uc_libc_dev/motors/servus.c **** 
  54:uc_libc_dev/motors/servus.c **** typedef struct {
  55:uc_libc_dev/motors/servus.c **** 	tServo servo[SERVO_N_MODULE];
  56:uc_libc_dev/motors/servus.c **** 	volatile s32 intervalUs;
  57:uc_libc_dev/motors/servus.c **** } tServoCtrl;
  58:uc_libc_dev/motors/servus.c **** static tServoCtrl servoCtrl;
  59:uc_libc_dev/motors/servus.c **** 
  60:uc_libc_dev/motors/servus.c **** static void servus_CallSytem(void);
  61:uc_libc_dev/motors/servus.c **** 
  62:uc_libc_dev/motors/servus.c **** void servus_Init(void) {
  63:uc_libc_dev/motors/servus.c **** 	servoCtrl.intervalUs = 0;
  64:uc_libc_dev/motors/servus.c **** 	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].count= 1500;
  66:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
  67:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].enable = 1;
  68:uc_libc_dev/motors/servus.c **** 	}
  69:uc_libc_dev/motors/servus.c **** 
  70:uc_libc_dev/motors/servus.c **** 	#if (US04_USES == pdON)
  71:uc_libc_dev/motors/servus.c **** 	us04_SetupPortsModule1();
  72:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
  73:uc_libc_dev/motors/servus.c **** 	us04_SetupPortsModule2();
  74:uc_libc_dev/motors/servus.c **** 	#endif
  75:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 2 )
  76:uc_libc_dev/motors/servus.c **** 	us04_SetupPortsModule3();
  77:uc_libc_dev/motors/servus.c **** 	#endif
  78:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 3 )
  79:uc_libc_dev/motors/servus.c **** 	us04_SetupPortsModule4();
  80:uc_libc_dev/motors/servus.c **** 	#endif
  81:uc_libc_dev/motors/servus.c **** 
  82:uc_libc_dev/motors/servus.c **** 	us04.modeContinuous = 0;	// Não medir de forma continua
  83:uc_libc_dev/motors/servus.c **** 	us04.measure = 0; 			// Sinaliza para não fazer as medições
  84:uc_libc_dev/motors/servus.c **** 	us04.done = 0;				// Nenhuma medição foi realizada ainda
  85:uc_libc_dev/motors/servus.c **** 	us04.FModule = 1;			// Sinaliza que o módulo 1 será o primeiro a ser medido
  86:uc_libc_dev/motors/servus.c **** 	us04.FCont = 0;				// Contador em micro segundos do CallSystem do US
  87:uc_libc_dev/motors/servus.c **** 
  88:uc_libc_dev/motors/servus.c **** 	for (x=0;x<US04_N_MODULE;x++) {
  89:uc_libc_dev/motors/servus.c **** 		us04.measurements[x] = 0;
  90:uc_libc_dev/motors/servus.c **** 		us04_Trigger(x, pdOFF); // Desligar sinais dos triggers dos módulos
  91:uc_libc_dev/motors/servus.c **** 	}
  92:uc_libc_dev/motors/servus.c **** 
  93:uc_libc_dev/motors/servus.c **** 	us04.Fdetected = 0;		// Sinaliza para não há objeto detectado
  94:uc_libc_dev/motors/servus.c **** 	us04.Ftriggerok = 0;		// Inicializar pedido de trigger
  95:uc_libc_dev/motors/servus.c **** 
  96:uc_libc_dev/motors/servus.c **** 	#if US04_USE_DEBUG == pdON
  97:uc_libc_dev/motors/servus.c **** 	US04_DBGTRIGGER_DIR |= US04_DBGTRIGGER;
  98:uc_libc_dev/motors/servus.c **** 	US04_DBGTRIGGER_CLR = US04_DBGTRIGGER;
  99:uc_libc_dev/motors/servus.c **** 	US04_DBGTRIGGEROK_DIR |= US04_DBGTRIGGEROK;
 100:uc_libc_dev/motors/servus.c **** 	US04_DBGTRIGGEROK_CLR = US04_DBGTRIGGEROK;
 101:uc_libc_dev/motors/servus.c **** 	US04_DBGDETECTED_DIR |= US04_DBGDETECTED;
 102:uc_libc_dev/motors/servus.c **** 	US04_DBGDETECTED_CLR = US04_DBGDETECTED;
 103:uc_libc_dev/motors/servus.c **** 	#endif
 104:uc_libc_dev/motors/servus.c **** 	#endif //#if (US04_USES == pdON)
 105:uc_libc_dev/motors/servus.c **** 
 106:uc_libc_dev/motors/servus.c **** 	servo1_SetupPorts();
 107:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 1)
 108:uc_libc_dev/motors/servus.c **** 	servo2_SetupPorts();
 109:uc_libc_dev/motors/servus.c **** 	#endif
 110:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 2)
 111:uc_libc_dev/motors/servus.c **** 	servo3_SetupPorts();
 112:uc_libc_dev/motors/servus.c **** 	#endif
 113:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 3)
 114:uc_libc_dev/motors/servus.c **** 	servo4_SetupPorts();
 115:uc_libc_dev/motors/servus.c **** 	#endif
 116:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 4)
 117:uc_libc_dev/motors/servus.c **** 	servo5_SetupPorts();
 118:uc_libc_dev/motors/servus.c **** 	#endif
 119:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 5)
 120:uc_libc_dev/motors/servus.c **** 	servo6_SetupPorts();
 121:uc_libc_dev/motors/servus.c **** 	#endif
 122:uc_libc_dev/motors/servus.c **** 
 123:uc_libc_dev/motors/servus.c **** 	servus_TimeInit();
 124:uc_libc_dev/motors/servus.c **** 	servus_SetIntHandler(servus_CallSytem);
 125:uc_libc_dev/motors/servus.c **** }
 126:uc_libc_dev/motors/servus.c **** 
 127:uc_libc_dev/motors/servus.c **** void servus_Finish(void) {
 128:uc_libc_dev/motors/servus.c **** 	servus_TimeStop();		// Desligo o timer para não gerar int para servus_CallSytem
 129:uc_libc_dev/motors/servus.c **** }
 130:uc_libc_dev/motors/servus.c **** 
 131:uc_libc_dev/motors/servus.c **** 
 132:uc_libc_dev/motors/servus.c **** #if (US04_USES == pdON)
 133:uc_libc_dev/motors/servus.c **** 
 134:uc_libc_dev/motors/servus.c **** // Inicializa a medição com ultrasom com modo continuo ou uma única medição
 135:uc_libc_dev/motors/servus.c **** // parametro modeCont:  pdFALSE: sinaliza para fazer uma única medição
 136:uc_libc_dev/motors/servus.c **** //						pdTRUE: Sinaliza para medir de forma continua
 137:uc_libc_dev/motors/servus.c **** void us04_StartMeasure(uint modeCont) {
 138:uc_libc_dev/motors/servus.c **** 	us04.modeContinuous = modeCont;
 139:uc_libc_dev/motors/servus.c **** 	if (us04.measure) return;
 140:uc_libc_dev/motors/servus.c **** 	us04.done = 0; 			// Sinaliza que a conversão não está pronta
 141:uc_libc_dev/motors/servus.c **** 	us04.measure = 1; 		// Sinaliza para fazer as medições
 142:uc_libc_dev/motors/servus.c **** }
 143:uc_libc_dev/motors/servus.c **** 
 144:uc_libc_dev/motors/servus.c **** // para qualquer medição seja no modo continuo ou não
 145:uc_libc_dev/motors/servus.c **** void us04_StopMeasure(void) {
 146:uc_libc_dev/motors/servus.c **** 	us04.modeContinuous = 0;
 147:uc_libc_dev/motors/servus.c **** 	us04.measure = 0; 		// Sinaliza para fazer as medições
 148:uc_libc_dev/motors/servus.c **** }
 149:uc_libc_dev/motors/servus.c **** 
 150:uc_libc_dev/motors/servus.c **** // Retorna em CM o valor lido pelo módulo US
 151:uc_libc_dev/motors/servus.c **** // Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a US04_N_MODULE
 152:uc_libc_dev/motors/servus.c **** // Retorna: 0: Se não encontrou o ostáculo, senão retorna com o valor em centimetros
 153:uc_libc_dev/motors/servus.c **** //			errDEVICE_NOT_FOUND: Se o módulo não existe
 154:uc_libc_dev/motors/servus.c **** //			errDEVICE_VALUE_NOT_READY: Se o módulo ainda não terminou a medição
 155:uc_libc_dev/motors/servus.c **** int us04_ReadMeasureCM(uint module) {
 156:uc_libc_dev/motors/servus.c **** 	if ( (module == 0) || (module > US04_N_MODULE)) return errDEVICE_NOT_FOUND;
 157:uc_libc_dev/motors/servus.c **** 	if (us04.done == 0) return errDEVICE_VALUE_NOT_READY;
 158:uc_libc_dev/motors/servus.c **** 	if (us04.measurements[module-1] == 0) return 0;
 159:uc_libc_dev/motors/servus.c **** 	return (us04.measurements[module-1]/58);
 160:uc_libc_dev/motors/servus.c **** }
 161:uc_libc_dev/motors/servus.c **** 
 162:uc_libc_dev/motors/servus.c **** // Ligar ou desligar o trigger do módulo
 163:uc_libc_dev/motors/servus.c **** static void us04_Trigger(uint module, uint action) {
 164:uc_libc_dev/motors/servus.c **** 	if (module == 1) us04_TriggerModule1(action);
 165:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 166:uc_libc_dev/motors/servus.c **** 	if (module == 2) us04_TriggerModule2(action);
 167:uc_libc_dev/motors/servus.c **** 	#endif
 168:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 2 )
 169:uc_libc_dev/motors/servus.c **** 	if (module == 3) us04_TriggerModule3(action);
 170:uc_libc_dev/motors/servus.c **** 	#endif
 171:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 3 )
 172:uc_libc_dev/motors/servus.c **** 	if (module == 4) us04_TriggerModule4(action);
 173:uc_libc_dev/motors/servus.c **** 	#endif
 174:uc_libc_dev/motors/servus.c **** }
 175:uc_libc_dev/motors/servus.c **** 
 176:uc_libc_dev/motors/servus.c **** // retorna 1 se o pino de eco = 1 senão retorna 0
 177:uc_libc_dev/motors/servus.c **** static uint us04_Echo(uint module) {
 178:uc_libc_dev/motors/servus.c **** 	uint result = 0;
 179:uc_libc_dev/motors/servus.c **** 	if ((module == 1) && (us04_EchoModule1() > 0)) result = 1;
 180:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 181:uc_libc_dev/motors/servus.c **** 	if ((module == 2) && (us04_EchoModule2() > 0)) result = 1;
 182:uc_libc_dev/motors/servus.c **** 	#endif
 183:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 2 )
 184:uc_libc_dev/motors/servus.c **** 	if ((module == 3) && (us04_EchoModule3() > 0)) result = 1;
 185:uc_libc_dev/motors/servus.c **** 	#endif
 186:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 3 )
 187:uc_libc_dev/motors/servus.c **** 	if ((module == 4) && (us04_EchoModule4() > 0)) result = 1;
 188:uc_libc_dev/motors/servus.c **** 	#endif
 189:uc_libc_dev/motors/servus.c **** 
 190:uc_libc_dev/motors/servus.c **** 	return result;
 191:uc_libc_dev/motors/servus.c **** }
 192:uc_libc_dev/motors/servus.c **** #endif //#if (US04_USES == pdON)
 193:uc_libc_dev/motors/servus.c **** 
 194:uc_libc_dev/motors/servus.c **** // Determina a posição do servo motor
 195:uc_libc_dev/motors/servus.c **** // Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a SERVO_N_MODULE
 196:uc_libc_dev/motors/servus.c **** // Retorna: pdPASS se o comando foi executado com sucesso
 197:uc_libc_dev/motors/servus.c **** //			errDEVICE_NOT_FOUND: Se o servo não existe
 198:uc_libc_dev/motors/servus.c **** //			errDEVICE_VALUE_INVALID: Valor inválido
 199:uc_libc_dev/motors/servus.c **** int servus_SetPos(uint servo, int us) {
 200:uc_libc_dev/motors/servus.c **** 	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 201:uc_libc_dev/motors/servus.c **** 	if ( (us<100) || (us>3000)) return errDEVICE_VALUE_INVALID;
 202:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].pos = us;
 203:uc_libc_dev/motors/servus.c **** 
 204:uc_libc_dev/motors/servus.c **** 	return pdPASS;
 205:uc_libc_dev/motors/servus.c **** }
 206:uc_libc_dev/motors/servus.c **** 
 207:uc_libc_dev/motors/servus.c **** // Habilita não a saida PWM para o servo
 208:uc_libc_dev/motors/servus.c **** // Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a SERVO_N_MODULE
 209:uc_libc_dev/motors/servus.c **** // Retorna: pdPASS se o comando foi executado com sucesso
 210:uc_libc_dev/motors/servus.c **** //			errDEVICE_NOT_FOUND: Se o servo não existe
 211:uc_libc_dev/motors/servus.c **** int servus_Enable(uint servo, uint en) {
 212:uc_libc_dev/motors/servus.c **** 	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 213:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].enable = (en == 0)?0:1;
 214:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].count = 0;
 215:uc_libc_dev/motors/servus.c **** 	return pdPASS;
 216:uc_libc_dev/motors/servus.c **** }
 217:uc_libc_dev/motors/servus.c **** 
 218:uc_libc_dev/motors/servus.c **** // Tick de sistema para controle dos servos e medições dos módulos de ultrasom.
 219:uc_libc_dev/motors/servus.c **** //	Esta função será chamada a cada 10us pelo timer do uC
 220:uc_libc_dev/motors/servus.c **** static void servus_CallSytem(void) {
  27              		.loc 1 220 0
  28              		.cfi_startproc
  29              		@ args = 0, pretend = 0, frame = 0
  30              		@ frame_needed = 0, uses_anonymous_args = 0
 221:uc_libc_dev/motors/servus.c **** 	uint x;
 222:uc_libc_dev/motors/servus.c **** 
 223:uc_libc_dev/motors/servus.c **** 	// ###############################################################################################
 224:uc_libc_dev/motors/servus.c **** 	// CONTROLE DOS SERVOS
 225:uc_libc_dev/motors/servus.c **** 	if (servoCtrl.intervalUs <= 0) {
  31              		.loc 1 225 0
  32 0000 794B     		ldr	r3, .L62
 220:uc_libc_dev/motors/servus.c **** 	uint x;
  33              		.loc 1 220 0
  34 0002 10B5     		push	{r4, lr}
  35              	.LCFI0:
  36              		.cfi_def_cfa_offset 8
  37              		.cfi_offset 4, -8
  38              		.cfi_offset 14, -4
  39              		.loc 1 225 0
  40 0004 9A6C     		ldr	r2, [r3, #72]
  41 0006 002A     		cmp	r2, #0
  42 0008 0CDC     		bgt	.L2
 226:uc_libc_dev/motors/servus.c **** 	 	servoCtrl.intervalUs = 20000;
  43              		.loc 1 226 0
  44 000a 44F62062 		movw	r2, #20000
 227:uc_libc_dev/motors/servus.c **** 	 	for (x=0;x<SERVO_N_MODULE;x++) servoCtrl.servo[x].count = servoCtrl.servo[x].pos;
  45              		.loc 1 227 0
  46 000e 0C24     		movs	r4, #12
 226:uc_libc_dev/motors/servus.c **** 	 	servoCtrl.intervalUs = 20000;
  47              		.loc 1 226 0
  48 0010 9A64     		str	r2, [r3, #72]
  49              	.LVL0:
  50              		.loc 1 227 0
  51 0012 0022     		movs	r2, #0
  52              	.LVL1:
  53              	.L3:
  54              		.loc 1 227 0 is_stmt 0 discriminator 3
  55 0014 04FB0231 		mla	r1, r4, r2, r3
  56 0018 0132     		adds	r2, r2, #1
  57              	.LVL2:
  58 001a 4868     		ldr	r0, [r1, #4]
  59 001c 062A     		cmp	r2, #6
  60 001e 8860     		str	r0, [r1, #8]
  61 0020 F8D1     		bne	.L3
  62 0022 02E0     		b	.L4
  63              	.LVL3:
  64              	.L2:
 228:uc_libc_dev/motors/servus.c **** 	 } else servoCtrl.intervalUs -= 10;
  65              		.loc 1 228 0 is_stmt 1
  66 0024 9A6C     		ldr	r2, [r3, #72]
  67 0026 0A3A     		subs	r2, r2, #10
  68 0028 9A64     		str	r2, [r3, #72]
  69              	.L4:
 229:uc_libc_dev/motors/servus.c **** 
 230:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[0].count > 0) && (servoCtrl.servo[0].enable) ) {
  70              		.loc 1 230 0
  71 002a 9968     		ldr	r1, [r3, #8]
  72 002c 6E4A     		ldr	r2, .L62
  73 002e 0029     		cmp	r1, #0
  74 0030 09DD     		ble	.L5
  75              		.loc 1 230 0 is_stmt 0 discriminator 1
  76 0032 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
  77 0034 C907     		lsls	r1, r1, #31
  78 0036 06D5     		bpl	.L5
 231:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[0].count -= 10;
  79              		.loc 1 231 0 is_stmt 1
  80 0038 9168     		ldr	r1, [r2, #8]
  81 003a 0A39     		subs	r1, r1, #10
  82 003c 9160     		str	r1, [r2, #8]
 232:uc_libc_dev/motors/servus.c **** 			SERVO1_SET = SERVO1;
  83              		.loc 1 232 0
  84 003e 4FF48061 		mov	r1, #1024
  85 0042 6A4A     		ldr	r2, .L62+4
  86 0044 02E0     		b	.L55
  87              	.L5:
 233:uc_libc_dev/motors/servus.c **** 	} else	SERVO1_CLR = SERVO1;
  88              		.loc 1 233 0
  89 0046 6A4A     		ldr	r2, .L62+8
  90 0048 4FF48061 		mov	r1, #1024
  91              	.L55:
  92 004c 1160     		str	r1, [r2]
 234:uc_libc_dev/motors/servus.c **** 
 235:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 1)
 236:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[1].count > 0) && (servoCtrl.servo[1].enable) ) {
  93              		.loc 1 236 0
  94 004e 5969     		ldr	r1, [r3, #20]
  95 0050 654A     		ldr	r2, .L62
  96 0052 0029     		cmp	r1, #0
  97 0054 09DD     		ble	.L7
  98              		.loc 1 236 0 is_stmt 0 discriminator 1
  99 0056 117B     		ldrb	r1, [r2, #12]	@ zero_extendqisi2
 100 0058 CC07     		lsls	r4, r1, #31
 101 005a 06D5     		bpl	.L7
 237:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[1].count -= 10;
 102              		.loc 1 237 0 is_stmt 1
 103 005c 5169     		ldr	r1, [r2, #20]
 104 005e 0A39     		subs	r1, r1, #10
 105 0060 5161     		str	r1, [r2, #20]
 238:uc_libc_dev/motors/servus.c **** 			SERVO2_SET = SERVO2;
 106              		.loc 1 238 0
 107 0062 4FF40071 		mov	r1, #512
 108 0066 614A     		ldr	r2, .L62+4
 109 0068 02E0     		b	.L56
 110              	.L7:
 239:uc_libc_dev/motors/servus.c **** 	} else	SERVO2_CLR = SERVO2;
 111              		.loc 1 239 0
 112 006a 614A     		ldr	r2, .L62+8
 113 006c 4FF40071 		mov	r1, #512
 114              	.L56:
 115 0070 1160     		str	r1, [r2]
 240:uc_libc_dev/motors/servus.c **** 	#endif
 241:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 2)
 242:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[2].count > 0) && (servoCtrl.servo[2].enable) ) {
 116              		.loc 1 242 0
 117 0072 196A     		ldr	r1, [r3, #32]
 118 0074 5C4A     		ldr	r2, .L62
 119 0076 0029     		cmp	r1, #0
 120 0078 09DD     		ble	.L9
 121              		.loc 1 242 0 is_stmt 0 discriminator 1
 122 007a 117E     		ldrb	r1, [r2, #24]	@ zero_extendqisi2
 123 007c C807     		lsls	r0, r1, #31
 124 007e 06D5     		bpl	.L9
 243:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[2].count -= 10;
 125              		.loc 1 243 0 is_stmt 1
 126 0080 116A     		ldr	r1, [r2, #32]
 127 0082 0A39     		subs	r1, r1, #10
 128 0084 1162     		str	r1, [r2, #32]
 244:uc_libc_dev/motors/servus.c **** 			SERVO3_SET = SERVO3;
 129              		.loc 1 244 0
 130 0086 4FF48071 		mov	r1, #256
 131 008a 584A     		ldr	r2, .L62+4
 132 008c 02E0     		b	.L57
 133              	.L9:
 245:uc_libc_dev/motors/servus.c **** 	} else	SERVO3_CLR = SERVO3;
 134              		.loc 1 245 0
 135 008e 584A     		ldr	r2, .L62+8
 136 0090 4FF48071 		mov	r1, #256
 137              	.L57:
 138 0094 1160     		str	r1, [r2]
 246:uc_libc_dev/motors/servus.c **** 
 247:uc_libc_dev/motors/servus.c **** 	#endif
 248:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 3)
 249:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[3].count > 0) && (servoCtrl.servo[3].enable) ) {
 139              		.loc 1 249 0
 140 0096 D96A     		ldr	r1, [r3, #44]
 141 0098 534A     		ldr	r2, .L62
 142 009a 0029     		cmp	r1, #0
 143 009c 09DD     		ble	.L11
 144              		.loc 1 249 0 is_stmt 0 discriminator 1
 145 009e 92F82410 		ldrb	r1, [r2, #36]	@ zero_extendqisi2
 146 00a2 C907     		lsls	r1, r1, #31
 147 00a4 05D5     		bpl	.L11
 250:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[3].count -= 10;
 148              		.loc 1 250 0 is_stmt 1
 149 00a6 D16A     		ldr	r1, [r2, #44]
 150 00a8 0A39     		subs	r1, r1, #10
 151 00aa D162     		str	r1, [r2, #44]
 251:uc_libc_dev/motors/servus.c **** 			SERVO4_SET = SERVO4;
 152              		.loc 1 251 0
 153 00ac 1021     		movs	r1, #16
 154 00ae 4F4A     		ldr	r2, .L62+4
 155 00b0 01E0     		b	.L58
 156              	.L11:
 252:uc_libc_dev/motors/servus.c **** 	} else	SERVO4_CLR = SERVO4;
 157              		.loc 1 252 0
 158 00b2 4F4A     		ldr	r2, .L62+8
 159 00b4 1021     		movs	r1, #16
 160              	.L58:
 161 00b6 1160     		str	r1, [r2]
 253:uc_libc_dev/motors/servus.c **** 	#endif
 254:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 4)
 255:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[4].count > 0) && (servoCtrl.servo[4].enable) ) {
 162              		.loc 1 255 0
 163 00b8 996B     		ldr	r1, [r3, #56]
 164 00ba 4B4A     		ldr	r2, .L62
 165 00bc 0029     		cmp	r1, #0
 166 00be 09DD     		ble	.L13
 167              		.loc 1 255 0 is_stmt 0 discriminator 1
 168 00c0 92F83010 		ldrb	r1, [r2, #48]	@ zero_extendqisi2
 169 00c4 CC07     		lsls	r4, r1, #31
 170 00c6 05D5     		bpl	.L13
 256:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[4].count -= 10;
 171              		.loc 1 256 0 is_stmt 1
 172 00c8 916B     		ldr	r1, [r2, #56]
 173 00ca 0A39     		subs	r1, r1, #10
 174 00cc 9163     		str	r1, [r2, #56]
 257:uc_libc_dev/motors/servus.c **** 			SERVO5_SET = SERVO5;
 175              		.loc 1 257 0
 176 00ce 0221     		movs	r1, #2
 177 00d0 464A     		ldr	r2, .L62+4
 178 00d2 01E0     		b	.L59
 179              	.L13:
 258:uc_libc_dev/motors/servus.c **** 	} else	SERVO5_CLR = SERVO5;
 180              		.loc 1 258 0
 181 00d4 464A     		ldr	r2, .L62+8
 182 00d6 0221     		movs	r1, #2
 183              	.L59:
 184 00d8 1160     		str	r1, [r2]
 259:uc_libc_dev/motors/servus.c **** 	#endif
 260:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 5)
 261:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[5].count > 0) && (servoCtrl.servo[5].enable) ) {
 185              		.loc 1 261 0
 186 00da 5B6C     		ldr	r3, [r3, #68]
 187 00dc 424A     		ldr	r2, .L62
 188 00de 002B     		cmp	r3, #0
 189 00e0 09DD     		ble	.L15
 190              		.loc 1 261 0 is_stmt 0 discriminator 1
 191 00e2 92F83C30 		ldrb	r3, [r2, #60]	@ zero_extendqisi2
 192 00e6 D807     		lsls	r0, r3, #31
 193 00e8 05D5     		bpl	.L15
 262:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[5].count -= 10;
 194              		.loc 1 262 0 is_stmt 1
 195 00ea 536C     		ldr	r3, [r2, #68]
 196 00ec 0A3B     		subs	r3, r3, #10
 197 00ee 5364     		str	r3, [r2, #68]
 263:uc_libc_dev/motors/servus.c **** 			SERVO6_SET = SERVO6;
 198              		.loc 1 263 0
 199 00f0 0122     		movs	r2, #1
 200 00f2 3E4B     		ldr	r3, .L62+4
 201 00f4 01E0     		b	.L60
 202              	.L15:
 264:uc_libc_dev/motors/servus.c **** 	} else	SERVO6_CLR = SERVO6;
 203              		.loc 1 264 0
 204 00f6 3E4B     		ldr	r3, .L62+8
 205 00f8 0122     		movs	r2, #1
 206              	.L60:
 207 00fa 1A60     		str	r2, [r3]
 265:uc_libc_dev/motors/servus.c **** 	#endif
 266:uc_libc_dev/motors/servus.c **** 
 267:uc_libc_dev/motors/servus.c **** 
 268:uc_libc_dev/motors/servus.c **** 	// ###############################################################################################
 269:uc_libc_dev/motors/servus.c **** 	// CONTROLE DO MÓDULOS ULTRASOM
 270:uc_libc_dev/motors/servus.c **** 	#if (US04_USES == pdON)
 271:uc_libc_dev/motors/servus.c **** 	#if US04_USE_DEBUG == pdOFF
 272:uc_libc_dev/motors/servus.c **** 	if (us04.measure == 0) return;
 208              		.loc 1 272 0
 209 00fc 3D4B     		ldr	r3, .L62+12
 210 00fe 1A68     		ldr	r2, [r3]
 211 0100 9107     		lsls	r1, r2, #30
 212 0102 70D5     		bpl	.L1
 273:uc_libc_dev/motors/servus.c **** 	#endif
 274:uc_libc_dev/motors/servus.c **** 
 275:uc_libc_dev/motors/servus.c **** 	// OS VALORES SÃO BASEADOS NA CHAMADA DO TICK DE ULTRASOM A CADA 10uS
 276:uc_libc_dev/motors/servus.c **** 	// Passo 1 (tempo 0uS)			: Desligar trigger do módulo e manter por 10uS
 277:uc_libc_dev/motors/servus.c **** 	// Passo 2 (tempo 10uS)			: Ligar trigger do módulo e manter por 10uS
 278:uc_libc_dev/motors/servus.c **** 	// Passo 3 (tempo 20uS)			: Desligar o trigger e dar inicio do tempo para exicitação do ultrasom (
 279:uc_libc_dev/motors/servus.c **** 	// Passo 4 (tempo 420uS a 38ms)	: Inicio da verificação do sinal do eco. Se a primeira leitura for
 280:uc_libc_dev/motors/servus.c **** 	// Passo 5 (tempo MIN 60ms)		: Reiniciar o gerenciador para a próxima leitura. Acrescentado um tem
 281:uc_libc_dev/motors/servus.c **** 
 282:uc_libc_dev/motors/servus.c **** 	// EMITIR SINAL DE TRIGGER. Iniciar em 1 para que os triggers fiquem pelo menos 10us em nível baix
 283:uc_libc_dev/motors/servus.c **** 	if (us04.FCont == 1) {
 213              		.loc 1 283 0
 214 0104 DA68     		ldr	r2, [r3, #12]
 215 0106 012A     		cmp	r2, #1
 216 0108 16D1     		bne	.L18
 284:uc_libc_dev/motors/servus.c **** 		us04_Trigger(us04.FModule, pdON); 				// Emitir sinal de trigger para o módulo atual
 217              		.loc 1 284 0
 218 010a 1A69     		ldr	r2, [r3, #16]
 219              	.LVL4:
 285:uc_libc_dev/motors/servus.c **** 		if (us04.modeContinuous == 0) us04.done = 0;	// Medições não pronta
 220              		.loc 1 285 0
 221 010c 3948     		ldr	r0, .L62+12
 222              	.LBB18:
 223              	.LBB19:
 164:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 224              		.loc 1 164 0
 225 010e 012A     		cmp	r2, #1
 226              	.LVL5:
 227              	.LBB20:
 228              	.LBB21:
 229 0110 02BF     		ittt	eq
 230 0112 364A     		ldreq	r2, .L62+4
 231              	.LVL6:
 232 0114 4FF48041 		moveq	r1, #16384
 233 0118 1160     		streq	r1, [r2]
 234              	.LVL7:
 235              	.LBE21:
 236              	.LBE20:
 237              	.LBE19:
 238              	.LBE18:
 239              		.loc 1 285 0
 240 011a 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
 241 011c 12F00101 		ands	r1, r2, #1
 242 0120 02BF     		ittt	eq
 243 0122 0278     		ldrbeq	r2, [r0]	@ zero_extendqisi2
 244 0124 61F38202 		bfieq	r2, r1, #2, #1
 245 0128 0270     		strbeq	r2, [r0]
 286:uc_libc_dev/motors/servus.c **** 		us04.measurements[us04.FModule-1] = 0;			// limpar distancia registrada do módulo atual
 246              		.loc 1 286 0
 247 012a 1A69     		ldr	r2, [r3, #16]
 248 012c 0021     		movs	r1, #0
 249 012e 0332     		adds	r2, r2, #3
 250 0130 03EB8202 		add	r2, r3, r2, lsl #2
 251 0134 5160     		str	r1, [r2, #4]
 252 0136 26E0     		b	.L21
 253              	.LVL8:
 254              	.L18:
 287:uc_libc_dev/motors/servus.c **** 
 288:uc_libc_dev/motors/servus.c **** 		#if US04_USE_DEBUG == pdON
 289:uc_libc_dev/motors/servus.c **** 		US04_DBGTRIGGER_SET = US04_DBGTRIGGER;
 290:uc_libc_dev/motors/servus.c **** 		#endif
 291:uc_libc_dev/motors/servus.c **** 
 292:uc_libc_dev/motors/servus.c **** 	// DESLIGAR TRIGGER E ESPERAR PELA EXICITAÇÃO DO ULTRASOM
 293:uc_libc_dev/motors/servus.c **** 	} else if (us04.FCont == 2) {
 255              		.loc 1 293 0
 256 0138 DA68     		ldr	r2, [r3, #12]
 257 013a 022A     		cmp	r2, #2
 258 013c 07D1     		bne	.L22
 294:uc_libc_dev/motors/servus.c **** 		us04_Trigger(us04.FModule, pdOFF); 		// Desligar sinal de trigger
 259              		.loc 1 294 0
 260 013e 1A69     		ldr	r2, [r3, #16]
 261              	.LVL9:
 262              	.LBB22:
 263              	.LBB23:
 164:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 264              		.loc 1 164 0
 265 0140 012A     		cmp	r2, #1
 266 0142 20D1     		bne	.L21
 267              	.LVL10:
 268              	.LBB24:
 269              	.LBB25:
 270 0144 2A4A     		ldr	r2, .L62+8
 271              	.LVL11:
 272 0146 4FF48041 		mov	r1, #16384
 273 014a 1160     		str	r1, [r2]
 274 014c 1BE0     		b	.L21
 275              	.LVL12:
 276              	.L22:
 277              	.LBE25:
 278              	.LBE24:
 279              	.LBE23:
 280              	.LBE22:
 295:uc_libc_dev/motors/servus.c **** 
 296:uc_libc_dev/motors/servus.c **** 		#if US04_USE_DEBUG == pdON
 297:uc_libc_dev/motors/servus.c **** 		US04_DBGTRIGGER_CLR = US04_DBGTRIGGER;
 298:uc_libc_dev/motors/servus.c **** 		#endif
 299:uc_libc_dev/motors/servus.c **** 
 300:uc_libc_dev/motors/servus.c **** 	// INICIO DA VERIFICAÇÃO DA DETECÇÃO DE OBTÁCULO (entre 420us a 38000us)
 301:uc_libc_dev/motors/servus.c **** 	} else if ( (us04.FCont > 42) && (us04.FCont <= 3800) ) {
 281              		.loc 1 301 0
 282 014e DA68     		ldr	r2, [r3, #12]
 283 0150 2A2A     		cmp	r2, #42
 284 0152 18D9     		bls	.L21
 285              		.loc 1 301 0 is_stmt 0 discriminator 1
 286 0154 40F6D862 		movw	r2, #3800
 287 0158 D968     		ldr	r1, [r3, #12]
 288 015a 9142     		cmp	r1, r2
 289 015c 13D8     		bhi	.L21
 302:uc_libc_dev/motors/servus.c **** 		if (us04.Ftriggerok == 0) 										// Checa se o módulo aceitou o pedido do trigger
 290              		.loc 1 302 0 is_stmt 1
 291 015e 9A68     		ldr	r2, [r3, #8]
 292 0160 42B9     		cbnz	r2, .L23
 303:uc_libc_dev/motors/servus.c **** 			us04.Ftriggerok = us04_Echo(us04.FModule); 						// Verificar se o módulo aceitou o trigger (ech
 293              		.loc 1 303 0
 294 0162 1969     		ldr	r1, [r3, #16]
 295              	.LVL13:
 296              	.LBB26:
 297              	.LBB27:
 179:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 298              		.loc 1 179 0
 299 0164 0129     		cmp	r1, #1
 300              	.LVL14:
 301              	.LBB28:
 302              	.LBB29:
 303 0166 02BF     		ittt	eq
 304 0168 234A     		ldreq	r2, .L62+16
 305 016a 1268     		ldreq	r2, [r2]
 306              	.LBE29:
 307              	.LBE28:
 178:uc_libc_dev/motors/servus.c **** 	if ((module == 1) && (us04_EchoModule1() > 0)) result = 1;
 308              		.loc 1 178 0
 309 016c C2F3C032 		ubfxeq	r2, r2, #15, #1
 310              	.LVL15:
 311              	.LBE27:
 312              	.LBE26:
 313              		.loc 1 303 0
 314 0170 9A60     		str	r2, [r3, #8]
 315 0172 08E0     		b	.L21
 316              	.LVL16:
 317              	.L23:
 304:uc_libc_dev/motors/servus.c **** 		else if (us04.Fdetected == 0) { 									// Checa se ainda não registramos a distancia do objeto 
 318              		.loc 1 304 0
 319 0174 5A68     		ldr	r2, [r3, #4]
 320 0176 32B9     		cbnz	r2, .L21
 305:uc_libc_dev/motors/servus.c **** 			if (us04_Echo(us04.FModule) == 0) { 					// Checa se há objeto detectado (echo = 0)
 321              		.loc 1 305 0
 322 0178 1A69     		ldr	r2, [r3, #16]
 323              	.LVL17:
 324              	.LBB30:
 325              	.LBB31:
 179:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 326              		.loc 1 179 0
 327 017a 012A     		cmp	r2, #1
 328 017c 26D1     		bne	.L25
 329              	.LVL18:
 330              	.LBB32:
 331              	.LBB33:
 332 017e 1E4A     		ldr	r2, .L62+16
 333              	.LVL19:
 334 0180 1268     		ldr	r2, [r2]
 335 0182 1204     		lsls	r2, r2, #16
 336 0184 22D5     		bpl	.L25
 337              	.LVL20:
 338              	.L21:
 339              	.LBE33:
 340              	.LBE32:
 341              	.LBE31:
 342              	.LBE30:
 306:uc_libc_dev/motors/servus.c **** 				us04.measurements[us04.FModule-1] = (us04.FCont-41)*10;		// Registra o tempo da deteção.
 307:uc_libc_dev/motors/servus.c **** 																		// 		Diminuir por 40 (400uS) pois cotarmos a partir da excitação e tempo de inici
 308:uc_libc_dev/motors/servus.c **** 																		// 		Multiplicar por 10 porque estamos contando em 10 e 10 us
 309:uc_libc_dev/motors/servus.c **** 				us04.Fdetected = 1;											// Trava a leitura
 310:uc_libc_dev/motors/servus.c **** 			}
 311:uc_libc_dev/motors/servus.c **** 		}
 312:uc_libc_dev/motors/servus.c **** 
 313:uc_libc_dev/motors/servus.c **** 		#if US04_USE_DEBUG == pdON
 314:uc_libc_dev/motors/servus.c **** 		if (us04.Ftriggerok == 1)
 315:uc_libc_dev/motors/servus.c **** 				US04_DBGTRIGGEROK_SET = US04_DBGTRIGGEROK;
 316:uc_libc_dev/motors/servus.c **** 		else	US04_DBGTRIGGEROK_CLR = US04_DBGTRIGGEROK;
 317:uc_libc_dev/motors/servus.c **** 
 318:uc_libc_dev/motors/servus.c **** 		if (us04.Fdetected == 1)
 319:uc_libc_dev/motors/servus.c **** 				US04_DBGDETECTED_SET = US04_DBGDETECTED;
 320:uc_libc_dev/motors/servus.c **** 		else 	US04_DBGDETECTED_CLR = US04_DBGDETECTED;
 321:uc_libc_dev/motors/servus.c **** 		#endif
 322:uc_libc_dev/motors/servus.c **** 	}
 323:uc_libc_dev/motors/servus.c **** 	#if US04_USE_DEBUG == pdON
 324:uc_libc_dev/motors/servus.c **** 	else if (us04.FCont > 3800) {
 325:uc_libc_dev/motors/servus.c **** 		US04_DBGTRIGGEROK_CLR = US04_DBGTRIGGEROK;
 326:uc_libc_dev/motors/servus.c **** 		US04_DBGDETECTED_CLR = US04_DBGDETECTED;
 327:uc_libc_dev/motors/servus.c **** 	}
 328:uc_libc_dev/motors/servus.c **** 	#endif
 329:uc_libc_dev/motors/servus.c **** 
 330:uc_libc_dev/motors/servus.c **** 	// ESPERAR O TEMPO PARA QUE O MÓDULO FINALIZE O PROCESSO DE MEDIÇÃO (MIN 50MS, MAS ESTAMOS DANDO M
 331:uc_libc_dev/motors/servus.c **** 	if (us04.FCont == US04_END_MEASURE) {
 343              		.loc 1 331 0
 344 0186 41F27071 		movw	r1, #6000
 345 018a D868     		ldr	r0, [r3, #12]
 346 018c 194A     		ldr	r2, .L62+12
 347 018e 8842     		cmp	r0, r1
 348 0190 18D1     		bne	.L26
 332:uc_libc_dev/motors/servus.c **** 		// Ir para o próximo módulo ou finalizar a leitura
 333:uc_libc_dev/motors/servus.c **** 		if (us04.FModule == US04_N_MODULE) {
 349              		.loc 1 333 0
 350 0192 1169     		ldr	r1, [r2, #16]
 351 0194 0129     		cmp	r1, #1
 352 0196 0DD1     		bne	.L27
 334:uc_libc_dev/motors/servus.c **** 			us04.FModule = 1;		// Sinaliza para meidor módulo 1
 353              		.loc 1 334 0
 354 0198 1161     		str	r1, [r2, #16]
 335:uc_libc_dev/motors/servus.c **** 			us04.done = 1;		// Sinaliza que a medição está completa
 355              		.loc 1 335 0
 356 019a 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 357 019c 41F00401 		orr	r1, r1, #4
 358 01a0 1170     		strb	r1, [r2]
 336:uc_libc_dev/motors/servus.c **** 			// Caso não for medição de forma continua, sinaliza para parar as medições e esperar pelo próxim
 337:uc_libc_dev/motors/servus.c **** 			if (us04.modeContinuous == 0) us04.measure = 0;
 359              		.loc 1 337 0
 360 01a2 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 361 01a4 11F00100 		ands	r0, r1, #1
 362 01a8 07D1     		bne	.L28
 363              		.loc 1 337 0 is_stmt 0 discriminator 1
 364 01aa 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 365 01ac 60F34101 		bfi	r1, r0, #1, #1
 366 01b0 1170     		strb	r1, [r2]
 367 01b2 02E0     		b	.L28
 368              	.L27:
 338:uc_libc_dev/motors/servus.c **** 		} else us04.FModule++;		// Sinaliza para medir o próximo módulo
 369              		.loc 1 338 0 is_stmt 1
 370 01b4 1169     		ldr	r1, [r2, #16]
 371 01b6 0131     		adds	r1, r1, #1
 372 01b8 1161     		str	r1, [r2, #16]
 373              	.L28:
 339:uc_libc_dev/motors/servus.c **** 
 340:uc_libc_dev/motors/servus.c **** 		us04.FCont = 0;
 374              		.loc 1 340 0
 375 01ba 0022     		movs	r2, #0
 376 01bc DA60     		str	r2, [r3, #12]
 341:uc_libc_dev/motors/servus.c **** 		us04.Fdetected = 0;;		// Sinaliza para não há objeto detectado
 377              		.loc 1 341 0
 378 01be 5A60     		str	r2, [r3, #4]
 342:uc_libc_dev/motors/servus.c **** 		us04.Ftriggerok = 0;		// Inicializar pedido de trigger
 379              		.loc 1 342 0
 380 01c0 9A60     		str	r2, [r3, #8]
 381 01c2 10BD     		pop	{r4, pc}
 382              	.L26:
 343:uc_libc_dev/motors/servus.c **** 	} else
 344:uc_libc_dev/motors/servus.c **** 		us04.FCont++;
 383              		.loc 1 344 0
 384 01c4 D368     		ldr	r3, [r2, #12]
 385 01c6 0133     		adds	r3, r3, #1
 386 01c8 D360     		str	r3, [r2, #12]
 387 01ca 10BD     		pop	{r4, pc}
 388              	.LVL21:
 389              	.L25:
 306:uc_libc_dev/motors/servus.c **** 																		// 		Diminuir por 40 (400uS) pois cotarmos a partir da excitação e tempo de inici
 390              		.loc 1 306 0
 391 01cc 1A69     		ldr	r2, [r3, #16]
 392 01ce D868     		ldr	r0, [r3, #12]
 393 01d0 0A21     		movs	r1, #10
 394 01d2 4143     		muls	r1, r0, r1
 395 01d4 0332     		adds	r2, r2, #3
 396 01d6 03EB8202 		add	r2, r3, r2, lsl #2
 397 01da A1F5CD71 		sub	r1, r1, #410
 398 01de 5160     		str	r1, [r2, #4]
 309:uc_libc_dev/motors/servus.c **** 			}
 399              		.loc 1 309 0
 400 01e0 0122     		movs	r2, #1
 401 01e2 5A60     		str	r2, [r3, #4]
 402 01e4 CFE7     		b	.L21
 403              	.L1:
 404 01e6 10BD     		pop	{r4, pc}
 405              	.L63:
 406              		.align	2
 407              	.L62:
 408 01e8 00000000 		.word	.LANCHOR0
 409 01ec 38C00920 		.word	537509944
 410 01f0 3CC00920 		.word	537509948
 411 01f4 00000000 		.word	.LANCHOR1
 412 01f8 34C00920 		.word	537509940
 413              		.cfi_endproc
 414              	.LFE9:
 416              		.section	.text.servus_Init,"ax",%progbits
 417              		.align	1
 418              		.global	servus_Init
 419              		.thumb
 420              		.thumb_func
 422              	servus_Init:
 423              	.LFB0:
  62:uc_libc_dev/motors/servus.c **** 	servoCtrl.intervalUs = 0;
 424              		.loc 1 62 0
 425              		.cfi_startproc
 426              		@ args = 0, pretend = 0, frame = 0
 427              		@ frame_needed = 0, uses_anonymous_args = 0
 428 0000 38B5     		push	{r3, r4, r5, lr}
 429              	.LCFI1:
 430              		.cfi_def_cfa_offset 16
 431              		.cfi_offset 3, -16
 432              		.cfi_offset 4, -12
 433              		.cfi_offset 5, -8
 434              		.cfi_offset 14, -4
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
 435              		.loc 1 65 0
 436 0002 40F2DC54 		movw	r4, #1500
  63:uc_libc_dev/motors/servus.c **** 	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
 437              		.loc 1 63 0
 438 0006 2F4A     		ldr	r2, .L67
 439 0008 0023     		movs	r3, #0
 440 000a 9364     		str	r3, [r2, #72]
 441              	.LVL22:
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
 442              		.loc 1 65 0
 443 000c 0C25     		movs	r5, #12
 444              	.LVL23:
 445              	.L65:
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
 446              		.loc 1 65 0 is_stmt 0 discriminator 3
 447 000e 05FB03F1 		mul	r1, r5, r3
 448 0012 5018     		adds	r0, r2, r1
  66:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].enable = 1;
 449              		.loc 1 66 0 is_stmt 1 discriminator 3
 450 0014 4460     		str	r4, [r0, #4]
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
 451              		.loc 1 65 0 discriminator 3
 452 0016 8460     		str	r4, [r0, #8]
  67:uc_libc_dev/motors/servus.c **** 	}
 453              		.loc 1 67 0 discriminator 3
 454 0018 505C     		ldrb	r0, [r2, r1]	@ zero_extendqisi2
  64:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].count= 1500;
 455              		.loc 1 64 0 discriminator 3
 456 001a 0133     		adds	r3, r3, #1
 457              	.LVL24:
  67:uc_libc_dev/motors/servus.c **** 	}
 458              		.loc 1 67 0 discriminator 3
 459 001c 40F00100 		orr	r0, r0, #1
  64:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].count= 1500;
 460              		.loc 1 64 0 discriminator 3
 461 0020 062B     		cmp	r3, #6
  67:uc_libc_dev/motors/servus.c **** 	}
 462              		.loc 1 67 0 discriminator 3
 463 0022 5054     		strb	r0, [r2, r1]
  64:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].count= 1500;
 464              		.loc 1 64 0 discriminator 3
 465 0024 F3D1     		bne	.L65
  71:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 466              		.loc 1 71 0
 467 0026 284B     		ldr	r3, .L67+4
 468              	.LVL25:
 469 0028 2848     		ldr	r0, .L67+8
 470 002a 1A68     		ldr	r2, [r3]
  86:uc_libc_dev/motors/servus.c **** 
 471              		.loc 1 86 0
 472 002c 0024     		movs	r4, #0
  71:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 473              		.loc 1 71 0
 474 002e 42F48042 		orr	r2, r2, #16384
 475 0032 1A60     		str	r2, [r3]
 476 0034 4FF48042 		mov	r2, #16384
 477 0038 0260     		str	r2, [r0]
  82:uc_libc_dev/motors/servus.c **** 	us04.measure = 0; 			// Sinaliza para não fazer as medições
 478              		.loc 1 82 0
 479 003a 254A     		ldr	r2, .L67+12
 480 003c 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 481 003e 6FF30001 		bfc	r1, #0, #1
 482 0042 1170     		strb	r1, [r2]
  83:uc_libc_dev/motors/servus.c **** 	us04.done = 0;				// Nenhuma medição foi realizada ainda
 483              		.loc 1 83 0
 484 0044 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 485 0046 6FF34101 		bfc	r1, #1, #1
 486 004a 1170     		strb	r1, [r2]
  84:uc_libc_dev/motors/servus.c **** 	us04.FModule = 1;			// Sinaliza que o módulo 1 será o primeiro a ser medido
 487              		.loc 1 84 0
 488 004c 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
 489 004e 6FF38201 		bfc	r1, #2, #1
 490 0052 1170     		strb	r1, [r2]
  85:uc_libc_dev/motors/servus.c **** 	us04.FCont = 0;				// Contador em micro segundos do CallSystem do US
 491              		.loc 1 85 0
 492 0054 0121     		movs	r1, #1
 493 0056 1161     		str	r1, [r2, #16]
  86:uc_libc_dev/motors/servus.c **** 
 494              		.loc 1 86 0
 495 0058 D460     		str	r4, [r2, #12]
 496              	.LVL26:
  89:uc_libc_dev/motors/servus.c **** 		us04_Trigger(x, pdOFF); // Desligar sinais dos triggers dos módulos
 497              		.loc 1 89 0
 498 005a 5461     		str	r4, [r2, #20]
 499              	.LVL27:
  93:uc_libc_dev/motors/servus.c **** 	us04.Ftriggerok = 0;		// Inicializar pedido de trigger
 500              		.loc 1 93 0
 501 005c 5460     		str	r4, [r2, #4]
  94:uc_libc_dev/motors/servus.c **** 
 502              		.loc 1 94 0
 503 005e 9460     		str	r4, [r2, #8]
 106:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 1)
 504              		.loc 1 106 0
 505 0060 1A68     		ldr	r2, [r3]
 506 0062 42F48062 		orr	r2, r2, #1024
 507 0066 1A60     		str	r2, [r3]
 508 0068 4FF48062 		mov	r2, #1024
 509 006c 0260     		str	r2, [r0]
 108:uc_libc_dev/motors/servus.c **** 	#endif
 510              		.loc 1 108 0
 511 006e 1A68     		ldr	r2, [r3]
 512 0070 42F40072 		orr	r2, r2, #512
 513 0074 1A60     		str	r2, [r3]
 514 0076 4FF40072 		mov	r2, #512
 515 007a 0260     		str	r2, [r0]
 111:uc_libc_dev/motors/servus.c **** 	#endif
 516              		.loc 1 111 0
 517 007c 1A68     		ldr	r2, [r3]
 518 007e 42F48072 		orr	r2, r2, #256
 519 0082 1A60     		str	r2, [r3]
 520 0084 4FF48072 		mov	r2, #256
 521 0088 0260     		str	r2, [r0]
 114:uc_libc_dev/motors/servus.c **** 	#endif
 522              		.loc 1 114 0
 523 008a 1A68     		ldr	r2, [r3]
 524 008c 42F01002 		orr	r2, r2, #16
 525 0090 1A60     		str	r2, [r3]
 526 0092 1022     		movs	r2, #16
 527 0094 0260     		str	r2, [r0]
 117:uc_libc_dev/motors/servus.c **** 	#endif
 528              		.loc 1 117 0
 529 0096 1A68     		ldr	r2, [r3]
 530 0098 42F00202 		orr	r2, r2, #2
 531 009c 1A60     		str	r2, [r3]
 532 009e 0222     		movs	r2, #2
 533 00a0 0260     		str	r2, [r0]
 120:uc_libc_dev/motors/servus.c **** 	#endif
 534              		.loc 1 120 0
 535 00a2 1A68     		ldr	r2, [r3]
 536 00a4 0A43     		orrs	r2, r2, r1
 537 00a6 1A60     		str	r2, [r3]
 538 00a8 0160     		str	r1, [r0]
 123:uc_libc_dev/motors/servus.c **** 	servus_SetIntHandler(servus_CallSytem);
 539              		.loc 1 123 0
 540 00aa 0322     		movs	r2, #3
 541 00ac 0846     		mov	r0, r1
 542 00ae FFF7FEFF 		bl	timer1_Init
 543              	.LVL28:
 544 00b2 FA20     		movs	r0, #250
 545 00b4 FFF7FEFF 		bl	timer1_SetMatch0
 546              	.LVL29:
 124:uc_libc_dev/motors/servus.c **** }
 547              		.loc 1 124 0
 548 00b8 2046     		mov	r0, r4
 125:uc_libc_dev/motors/servus.c **** 
 549              		.loc 1 125 0
 550 00ba BDE83840 		pop	{r3, r4, r5, lr}
 551              	.LCFI2:
 552              		.cfi_restore 14
 553              		.cfi_restore 5
 554              		.cfi_restore 4
 555              		.cfi_restore 3
 556              		.cfi_def_cfa_offset 0
 124:uc_libc_dev/motors/servus.c **** }
 557              		.loc 1 124 0
 558 00be 0549     		ldr	r1, .L67+16
 559 00c0 FFF7FEBF 		b	timer1_SetIntHandler
 560              	.LVL30:
 561              	.L68:
 562              		.align	2
 563              	.L67:
 564 00c4 00000000 		.word	.LANCHOR0
 565 00c8 20C00920 		.word	537509920
 566 00cc 3CC00920 		.word	537509948
 567 00d0 00000000 		.word	.LANCHOR1
 568 00d4 00000000 		.word	servus_CallSytem
 569              		.cfi_endproc
 570              	.LFE0:
 572              		.section	.text.servus_Finish,"ax",%progbits
 573              		.align	1
 574              		.global	servus_Finish
 575              		.thumb
 576              		.thumb_func
 578              	servus_Finish:
 579              	.LFB1:
 127:uc_libc_dev/motors/servus.c **** 	servus_TimeStop();		// Desligo o timer para não gerar int para servus_CallSytem
 580              		.loc 1 127 0
 581              		.cfi_startproc
 582              		@ args = 0, pretend = 0, frame = 0
 583              		@ frame_needed = 0, uses_anonymous_args = 0
 584              		@ link register save eliminated.
 128:uc_libc_dev/motors/servus.c **** }
 585              		.loc 1 128 0
 586 0000 0020     		movs	r0, #0
 587 0002 FFF7FEBF 		b	timer1_Set
 588              	.LVL31:
 589              		.cfi_endproc
 590              	.LFE1:
 592              		.section	.text.us04_StartMeasure,"ax",%progbits
 593              		.align	1
 594              		.global	us04_StartMeasure
 595              		.thumb
 596              		.thumb_func
 598              	us04_StartMeasure:
 599              	.LFB2:
 137:uc_libc_dev/motors/servus.c **** 	us04.modeContinuous = modeCont;
 600              		.loc 1 137 0
 601              		.cfi_startproc
 602              		@ args = 0, pretend = 0, frame = 0
 603              		@ frame_needed = 0, uses_anonymous_args = 0
 604              		@ link register save eliminated.
 605              	.LVL32:
 138:uc_libc_dev/motors/servus.c **** 	if (us04.measure) return;
 606              		.loc 1 138 0
 607 0000 084B     		ldr	r3, .L72
 608 0002 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
 609 0004 60F30002 		bfi	r2, r0, #0, #1
 610 0008 1A70     		strb	r2, [r3]
 139:uc_libc_dev/motors/servus.c **** 	us04.done = 0; 			// Sinaliza que a conversão não está pronta
 611              		.loc 1 139 0
 612 000a 1968     		ldr	r1, [r3]
 613 000c C1F34001 		ubfx	r1, r1, #1, #1
 614 0010 39B9     		cbnz	r1, .L70
 140:uc_libc_dev/motors/servus.c **** 	us04.measure = 1; 		// Sinaliza para fazer as medições
 615              		.loc 1 140 0
 616 0012 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
 617 0014 61F38202 		bfi	r2, r1, #2, #1
 618 0018 1A70     		strb	r2, [r3]
 141:uc_libc_dev/motors/servus.c **** }
 619              		.loc 1 141 0
 620 001a 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
 621 001c 42F00202 		orr	r2, r2, #2
 622 0020 1A70     		strb	r2, [r3]
 623              	.L70:
 624 0022 7047     		bx	lr
 625              	.L73:
 626              		.align	2
 627              	.L72:
 628 0024 00000000 		.word	.LANCHOR1
 629              		.cfi_endproc
 630              	.LFE2:
 632              		.section	.text.us04_StopMeasure,"ax",%progbits
 633              		.align	1
 634              		.global	us04_StopMeasure
 635              		.thumb
 636              		.thumb_func
 638              	us04_StopMeasure:
 639              	.LFB3:
 145:uc_libc_dev/motors/servus.c **** 	us04.modeContinuous = 0;
 640              		.loc 1 145 0
 641              		.cfi_startproc
 642              		@ args = 0, pretend = 0, frame = 0
 643              		@ frame_needed = 0, uses_anonymous_args = 0
 644              		@ link register save eliminated.
 146:uc_libc_dev/motors/servus.c **** 	us04.measure = 0; 		// Sinaliza para fazer as medições
 645              		.loc 1 146 0
 646 0000 044B     		ldr	r3, .L75
 647 0002 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
 648 0004 6FF30002 		bfc	r2, #0, #1
 649 0008 1A70     		strb	r2, [r3]
 147:uc_libc_dev/motors/servus.c **** }
 650              		.loc 1 147 0
 651 000a 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
 652 000c 6FF34102 		bfc	r2, #1, #1
 653 0010 1A70     		strb	r2, [r3]
 654 0012 7047     		bx	lr
 655              	.L76:
 656              		.align	2
 657              	.L75:
 658 0014 00000000 		.word	.LANCHOR1
 659              		.cfi_endproc
 660              	.LFE3:
 662              		.section	.text.us04_ReadMeasureCM,"ax",%progbits
 663              		.align	1
 664              		.global	us04_ReadMeasureCM
 665              		.thumb
 666              		.thumb_func
 668              	us04_ReadMeasureCM:
 669              	.LFB4:
 155:uc_libc_dev/motors/servus.c **** 	if ( (module == 0) || (module > US04_N_MODULE)) return errDEVICE_NOT_FOUND;
 670              		.loc 1 155 0
 671              		.cfi_startproc
 672              		@ args = 0, pretend = 0, frame = 0
 673              		@ frame_needed = 0, uses_anonymous_args = 0
 674              		@ link register save eliminated.
 675              	.LVL33:
 156:uc_libc_dev/motors/servus.c **** 	if (us04.done == 0) return errDEVICE_VALUE_NOT_READY;
 676              		.loc 1 156 0
 677 0000 0128     		cmp	r0, #1
 678 0002 0AD1     		bne	.L79
 157:uc_libc_dev/motors/servus.c **** 	if (us04.measurements[module-1] == 0) return 0;
 679              		.loc 1 157 0
 680 0004 074B     		ldr	r3, .L82
 681 0006 1A68     		ldr	r2, [r3]
 682 0008 5207     		lsls	r2, r2, #29
 683 000a 08D5     		bpl	.L80
 158:uc_libc_dev/motors/servus.c **** 	return (us04.measurements[module-1]/58);
 684              		.loc 1 158 0
 685 000c 5869     		ldr	r0, [r3, #20]
 686              	.LVL34:
 687 000e 38B1     		cbz	r0, .L78
 159:uc_libc_dev/motors/servus.c **** }
 688              		.loc 1 159 0
 689 0010 5B69     		ldr	r3, [r3, #20]
 690 0012 3A20     		movs	r0, #58
 691 0014 B3FBF0F0 		udiv	r0, r3, r0
 692 0018 7047     		bx	lr
 693              	.LVL35:
 694              	.L79:
 156:uc_libc_dev/motors/servus.c **** 	if (us04.done == 0) return errDEVICE_VALUE_NOT_READY;
 695              		.loc 1 156 0
 696 001a 0348     		ldr	r0, .L82+4
 697              	.LVL36:
 698 001c 7047     		bx	lr
 699              	.LVL37:
 700              	.L80:
 157:uc_libc_dev/motors/servus.c **** 	if (us04.measurements[module-1] == 0) return 0;
 701              		.loc 1 157 0
 702 001e 0348     		ldr	r0, .L82+8
 703              	.LVL38:
 704              	.L78:
 160:uc_libc_dev/motors/servus.c **** 
 705              		.loc 1 160 0
 706 0020 7047     		bx	lr
 707              	.L83:
 708 0022 00BF     		.align	2
 709              	.L82:
 710 0024 00000000 		.word	.LANCHOR1
 711 0028 D4FEFFFF 		.word	-300
 712 002c D2FEFFFF 		.word	-302
 713              		.cfi_endproc
 714              	.LFE4:
 716              		.section	.text.servus_SetPos,"ax",%progbits
 717              		.align	1
 718              		.global	servus_SetPos
 719              		.thumb
 720              		.thumb_func
 722              	servus_SetPos:
 723              	.LFB7:
 199:uc_libc_dev/motors/servus.c **** 	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 724              		.loc 1 199 0
 725              		.cfi_startproc
 726              		@ args = 0, pretend = 0, frame = 0
 727              		@ frame_needed = 0, uses_anonymous_args = 0
 728              		@ link register save eliminated.
 729              	.LVL39:
 200:uc_libc_dev/motors/servus.c **** 	if ( (us<100) || (us>3000)) return errDEVICE_VALUE_INVALID;
 730              		.loc 1 200 0
 731 0000 0138     		subs	r0, r0, #1
 732              	.LVL40:
 733 0002 0528     		cmp	r0, #5
 734 0004 0CD8     		bhi	.L86
 201:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].pos = us;
 735              		.loc 1 201 0
 736 0006 40F65433 		movw	r3, #2900
 737 000a A1F16402 		sub	r2, r1, #100
 738 000e 9A42     		cmp	r2, r3
 739 0010 08D8     		bhi	.L87
 202:uc_libc_dev/motors/servus.c **** 
 740              		.loc 1 202 0
 741 0012 064B     		ldr	r3, .L88
 742 0014 0C22     		movs	r2, #12
 743 0016 02FB0030 		mla	r0, r2, r0, r3
 744              	.LVL41:
 745 001a 4160     		str	r1, [r0, #4]
 204:uc_libc_dev/motors/servus.c **** }
 746              		.loc 1 204 0
 747 001c 0120     		movs	r0, #1
 748 001e 7047     		bx	lr
 749              	.L86:
 200:uc_libc_dev/motors/servus.c **** 	if ( (us<100) || (us>3000)) return errDEVICE_VALUE_INVALID;
 750              		.loc 1 200 0
 751 0020 0348     		ldr	r0, .L88+4
 752 0022 7047     		bx	lr
 753              	.L87:
 201:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].pos = us;
 754              		.loc 1 201 0
 755 0024 6FF49770 		mvn	r0, #302
 205:uc_libc_dev/motors/servus.c **** 
 756              		.loc 1 205 0
 757 0028 7047     		bx	lr
 758              	.L89:
 759 002a 00BF     		.align	2
 760              	.L88:
 761 002c 00000000 		.word	.LANCHOR0
 762 0030 D4FEFFFF 		.word	-300
 763              		.cfi_endproc
 764              	.LFE7:
 766              		.section	.text.servus_Enable,"ax",%progbits
 767              		.align	1
 768              		.global	servus_Enable
 769              		.thumb
 770              		.thumb_func
 772              	servus_Enable:
 773              	.LFB8:
 211:uc_libc_dev/motors/servus.c **** 	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 774              		.loc 1 211 0
 775              		.cfi_startproc
 776              		@ args = 0, pretend = 0, frame = 0
 777              		@ frame_needed = 0, uses_anonymous_args = 0
 778              	.LVL42:
 212:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].enable = (en == 0)?0:1;
 779              		.loc 1 212 0
 780 0000 0138     		subs	r0, r0, #1
 781              	.LVL43:
 782 0002 0528     		cmp	r0, #5
 211:uc_libc_dev/motors/servus.c **** 	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 783              		.loc 1 211 0
 784 0004 10B5     		push	{r4, lr}
 785              	.LCFI3:
 786              		.cfi_def_cfa_offset 8
 787              		.cfi_offset 4, -8
 788              		.cfi_offset 14, -4
 212:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].enable = (en == 0)?0:1;
 789              		.loc 1 212 0
 790 0006 0ED8     		bhi	.L92
 213:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].count = 0;
 791              		.loc 1 213 0
 792 0008 0C23     		movs	r3, #12
 793 000a 5843     		muls	r0, r3, r0
 794              	.LVL44:
 795 000c 074A     		ldr	r2, .L93
 796 000e 0031     		adds	r1, r1, #0
 797 0010 135C     		ldrb	r3, [r2, r0]	@ zero_extendqisi2
 798 0012 18BF     		it	ne
 799 0014 0121     		movne	r1, #1
 800              	.LVL45:
 801 0016 61F30003 		bfi	r3, r1, #0, #1
 802 001a 1418     		adds	r4, r2, r0
 803 001c 1354     		strb	r3, [r2, r0]
 214:uc_libc_dev/motors/servus.c **** 	return pdPASS;
 804              		.loc 1 214 0
 805 001e 0023     		movs	r3, #0
 806 0020 A360     		str	r3, [r4, #8]
 215:uc_libc_dev/motors/servus.c **** }
 807              		.loc 1 215 0
 808 0022 0120     		movs	r0, #1
 809 0024 10BD     		pop	{r4, pc}
 810              	.LVL46:
 811              	.L92:
 212:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].enable = (en == 0)?0:1;
 812              		.loc 1 212 0
 813 0026 0248     		ldr	r0, .L93+4
 216:uc_libc_dev/motors/servus.c **** 
 814              		.loc 1 216 0
 815 0028 10BD     		pop	{r4, pc}
 816              	.L94:
 817 002a 00BF     		.align	2
 818              	.L93:
 819 002c 00000000 		.word	.LANCHOR0
 820 0030 D4FEFFFF 		.word	-300
 821              		.cfi_endproc
 822              	.LFE8:
 824              		.section	.bss.us04,"aw",%nobits
 825              		.align	2
 826              		.set	.LANCHOR1,. + 0
 829              	us04:
 830 0000 00000000 		.space	24
 830      00000000 
 830      00000000 
 830      00000000 
 830      00000000 
 831              		.section	.bss.servoCtrl,"aw",%nobits
 832              		.align	2
 833              		.set	.LANCHOR0,. + 0
 836              	servoCtrl:
 837 0000 00000000 		.space	76
 837      00000000 
 837      00000000 
 837      00000000 
 837      00000000 
 838              		.text
 839              	.Letext0:
 840              		.file 2 "uc_libc_dev/_libdef/uc_libdefs.h"
 841              		.file 3 "uc_libc_dev/_arch/arm_lpc/timer/timer1.h"
DEFINED SYMBOLS
                            *ABS*:00000000 servus.c
D:\_temp\_windows\ccBh4afB.s:20     .text.servus_CallSytem:00000000 $t
D:\_temp\_windows\ccBh4afB.s:24     .text.servus_CallSytem:00000000 servus_CallSytem
D:\_temp\_windows\ccBh4afB.s:408    .text.servus_CallSytem:000001e8 $d
D:\_temp\_windows\ccBh4afB.s:417    .text.servus_Init:00000000 $t
D:\_temp\_windows\ccBh4afB.s:422    .text.servus_Init:00000000 servus_Init
D:\_temp\_windows\ccBh4afB.s:564    .text.servus_Init:000000c4 $d
D:\_temp\_windows\ccBh4afB.s:573    .text.servus_Finish:00000000 $t
D:\_temp\_windows\ccBh4afB.s:578    .text.servus_Finish:00000000 servus_Finish
D:\_temp\_windows\ccBh4afB.s:593    .text.us04_StartMeasure:00000000 $t
D:\_temp\_windows\ccBh4afB.s:598    .text.us04_StartMeasure:00000000 us04_StartMeasure
D:\_temp\_windows\ccBh4afB.s:628    .text.us04_StartMeasure:00000024 $d
D:\_temp\_windows\ccBh4afB.s:633    .text.us04_StopMeasure:00000000 $t
D:\_temp\_windows\ccBh4afB.s:638    .text.us04_StopMeasure:00000000 us04_StopMeasure
D:\_temp\_windows\ccBh4afB.s:658    .text.us04_StopMeasure:00000014 $d
D:\_temp\_windows\ccBh4afB.s:663    .text.us04_ReadMeasureCM:00000000 $t
D:\_temp\_windows\ccBh4afB.s:668    .text.us04_ReadMeasureCM:00000000 us04_ReadMeasureCM
D:\_temp\_windows\ccBh4afB.s:710    .text.us04_ReadMeasureCM:00000024 $d
D:\_temp\_windows\ccBh4afB.s:717    .text.servus_SetPos:00000000 $t
D:\_temp\_windows\ccBh4afB.s:722    .text.servus_SetPos:00000000 servus_SetPos
D:\_temp\_windows\ccBh4afB.s:761    .text.servus_SetPos:0000002c $d
D:\_temp\_windows\ccBh4afB.s:767    .text.servus_Enable:00000000 $t
D:\_temp\_windows\ccBh4afB.s:772    .text.servus_Enable:00000000 servus_Enable
D:\_temp\_windows\ccBh4afB.s:819    .text.servus_Enable:0000002c $d
D:\_temp\_windows\ccBh4afB.s:825    .bss.us04:00000000 $d
D:\_temp\_windows\ccBh4afB.s:829    .bss.us04:00000000 us04
D:\_temp\_windows\ccBh4afB.s:832    .bss.servoCtrl:00000000 $d
D:\_temp\_windows\ccBh4afB.s:836    .bss.servoCtrl:00000000 servoCtrl
                     .debug_frame:00000010 $d

UNDEFINED SYMBOLS
timer1_Init
timer1_SetMatch0
timer1_SetIntHandler
timer1_Set
